Next.js template
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

[dataId].js 1.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import DataDetailsCard from '../../components/cards/data-details-card/DataDetailsCard';
  2. import { getDataIds } from '../../requests/dataIdsRequest';
  3. import { getSingleData } from '../../requests/singleDataRequest';
  4. function SignelDataPage(props) {
  5. const data = props.selectedData;
  6. if (!data) {
  7. return <h1>No data!</h1>;
  8. }
  9. return <DataDetailsCard data={data.singleData} />;
  10. }
  11. export async function getStaticProps(context) {
  12. const dataId = context.params.dataId;
  13. try {
  14. const data = await getSingleData(dataId);
  15. return {
  16. props: {
  17. selectedData: data,
  18. },
  19. revalidate: 60,
  20. };
  21. } catch (error) {
  22. return {
  23. props: {
  24. selectedData: null,
  25. },
  26. revalidate: 60,
  27. };
  28. }
  29. }
  30. export async function getStaticPaths() {
  31. const firstPageDataIds = await getDataIds();
  32. console.log(firstPageDataIds);
  33. const paths = firstPageDataIds.dataIds.map((id) => ({
  34. params: { dataId: id },
  35. }));
  36. return {
  37. paths: paths,
  38. fallback: 'blocking',
  39. };
  40. }
  41. export default SignelDataPage;